<?php

namespace app\admin\validate;

use think\Validate;

class OnlineClassroom extends Validate
{
    /**
     * 验证规则
     */
    protected $rule = [
        'user_id' => 'require|integer|gt:0',
        'course_id' => 'require|integer|gt:0',
        'course_name' => 'require|length:1,255',
        'course_type' => 'require|in:video,audio,text,live',
        'chapter_id' => 'integer|egt:0',
        'chapter_name' => 'length:0,255',
        'learning_duration' => 'integer|egt:0',
        'learning_progress' => 'float|between:0,100',
        'is_completed' => 'in:0,1',
        'start_time' => 'date',
        'end_time' => 'date',
        'last_position' => 'integer|egt:0',
        'device_type' => 'in:pc,mobile,tablet',
        'ip_address' => 'length:0,45',
        'user_agent' => 'length:0,1000',
        'score' => 'float|between:0,100',
        'notes' => 'length:0,5000',
        'status' => 'in:0,1',
        'weigh' => 'integer'
    ];
    
    /**
     * 提示消息
     */
    protected $message = [
        'user_id.require' => '用户ID不能为空',
        'user_id.integer' => '用户ID必须为整数',
        'user_id.gt' => '用户ID必须大于0',
        'course_id.require' => '课程ID不能为空',
        'course_id.integer' => '课程ID必须为整数',
        'course_id.gt' => '课程ID必须大于0',
        'course_name.require' => '课程名称不能为空',
        'course_name.length' => '课程名称长度不能超过255个字符',
        'course_type.require' => '课程类型不能为空',
        'course_type.in' => '课程类型必须为：视频课程、音频课程、文本课程、直播课程中的一种',
        'chapter_id.integer' => '章节ID必须为整数',
        'chapter_id.egt' => '章节ID必须大于等于0',
        'chapter_name.length' => '章节名称长度不能超过255个字符',
        'learning_duration.integer' => '学习时长必须为整数',
        'learning_duration.egt' => '学习时长必须大于等于0',
        'learning_progress.float' => '学习进度必须为数字',
        'learning_progress.between' => '学习进度必须在0-100之间',
        'is_completed.in' => '完成状态必须为：未完成或已完成',
        'start_time.date' => '开始学习时间格式不正确',
        'end_time.date' => '结束学习时间格式不正确',
        'last_position.integer' => '最后学习位置必须为整数',
        'last_position.egt' => '最后学习位置必须大于等于0',
        'device_type.in' => '设备类型必须为：电脑、手机、平板中的一种',
        'ip_address.length' => 'IP地址长度不能超过45个字符',
        'user_agent.length' => '用户代理信息长度不能超过1000个字符',
        'score.float' => '学习得分必须为数字',
        'score.between' => '学习得分必须在0-100之间',
        'notes.length' => '学习笔记长度不能超过5000个字符',
        'status.in' => '状态必须为：禁用或正常',
        'weigh.integer' => '权重必须为整数'
    ];
    
    /**
     * 验证场景
     */
    protected $scene = [
        'add' => ['user_id', 'course_id', 'course_name', 'course_type', 'chapter_id', 'chapter_name', 'learning_duration', 'learning_progress', 'is_completed', 'start_time', 'end_time', 'last_position', 'device_type', 'ip_address', 'score', 'notes', 'status', 'weigh'],
        'edit' => ['user_id', 'course_id', 'course_name', 'course_type', 'chapter_id', 'chapter_name', 'learning_duration', 'learning_progress', 'is_completed', 'start_time', 'end_time', 'last_position', 'device_type', 'ip_address', 'score', 'notes', 'status', 'weigh']
    ];
}